<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:ufamily="http://www.universal-devices.com/wsdk/isy/3.0/objects/family" elementFormDefault="unqualified" targetNamespace="http://www.universal-devices.com/wsdk/isy/3.0/objects/family" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:annotation>
    <xsd:documentation>
				Copyright 2007-2012 Universal Devices, Inc.
				All Rights Reserved
				
				Defines objects and constructs for Product Families
		</xsd:documentation>
  </xsd:annotation>
  <xsd:simpleType name="NodeFamilyID">
    <xsd:annotation>
      <xsd:documentation>
				0 = Default (core driver implementation e.g. Insteon, UPB)
				1 = Insteon products
				2 = UPB Products
				3 = RCS Products
				4 = ZWave products
				5 = Auto DR (for groups)
				6 = Generic (for groups)
				7 = UDI Products
				8 = Brultech Products
				
				Please note that for each family, there's an associated definition file in
				the form of:
				[id]_fam.xml
				
				So, 1_fam.xml defines INSTEON family and 3_fam.xml defines RCS family, etc.
				
				The schema for definition files can be found in family.xsd.
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:unsignedInt">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
      <xsd:enumeration value="3" />
      <xsd:enumeration value="4" />
      <xsd:enumeration value="5" />
      <xsd:enumeration value="6" />
      <xsd:enumeration value="7" />
      <xsd:enumeration value="8" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="NodeCategoryID">
    <xsd:annotation>
      <xsd:documentation>
				Default and generic categories for nodes
				0 = Generic Controller
				1 = Dimmer
				2 = Switch/Relay
				3 = Bridge/Network
				4 = Irrigation Control
				5 = Climate Control
				6 = Pool Control
				7 = Sensors/Actuators
				8 = Home Entertainment
				9 = Energy Management
				10 = Appliance Control
				11 = Plumbing
				12 = Communications
				13 = Computer Control
				14 = Windows Covering Control
				15 = Access Control
				16 = Security/Health/Safety Control
				17 = Surveillance Control
				18 = Automotive
				19 = Pet Care Control
				20 = Toys
				21 = Time Keeping 
				22 = Holiday
				113 = A10/X10
				127 = Virtual
				254 = Unknown
			</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:unsignedInt">
      <xsd:enumeration value="0" />
      <xsd:enumeration value="1" />
      <xsd:enumeration value="2" />
      <xsd:enumeration value="3" />
      <xsd:enumeration value="4" />
      <xsd:enumeration value="5" />
      <xsd:enumeration value="6" />
      <xsd:enumeration value="7" />
      <xsd:enumeration value="8" />
      <xsd:enumeration value="9" />
      <xsd:enumeration value="10" />
      <xsd:enumeration value="11" />
      <xsd:enumeration value="12" />
      <xsd:enumeration value="13" />
      <xsd:enumeration value="14" />
      <xsd:enumeration value="15" />
      <xsd:enumeration value="16" />
      <xsd:enumeration value="17" />
      <xsd:enumeration value="18" />
      <xsd:enumeration value="19" />
      <xsd:enumeration value="20" />
      <xsd:enumeration value="21" />
      <xsd:enumeration value="22" />
      <xsd:enumeration value="113" />
      <xsd:enumeration value="127" />
      <xsd:enumeration value="254" />
    </xsd:restriction>
  </xsd:simpleType>
  <xsd:complexType name="NodeSubCategory">
    <xsd:attribute name="id" type="xsd:unsignedInt" use="required">
      <xsd:annotation>
        <xsd:documentation>
					The sub category id;
					This is defined by each driver/family; for instance INSTEON will have
					different sub categories 
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="name" type="xsd:string" use="required">
      <xsd:annotation>
        <xsd:documentation>
					The sub category name	
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="NodeCategory">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="subCategory" type="ufamily:NodeSubCategory">
        <xsd:annotation>
          <xsd:documentation>
						The sub category for this node	
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="ufamily:NodeCategoryID" use="required">
      <xsd:annotation>
        <xsd:documentation>
					The category id
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="name" type="xsd:string" use="required">
      <xsd:annotation>
        <xsd:documentation>
					The category name	
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:complexType name="NodeCategories">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="nodeCategory" type="ufamily:NodeCategory">
        <xsd:annotation>
          <xsd:documentation>
						The category
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="NodeCategories" type="ufamily:NodeCategories">
    <xsd:annotation>
      <xsd:documentation>
				A list of defined categories which can be found in 
				cats.xml	
			</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="NodeFamily">
    <xsd:sequence>
      <xsd:element minOccurs="1" maxOccurs="1" name="description" type="xsd:string">
        <xsd:annotation>
          <xsd:documentation>
						The description for the family
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
      <xsd:element minOccurs="1" maxOccurs="unbounded" name="nodeCategory" type="ufamily:NodeCategory">
        <xsd:annotation>
          <xsd:documentation>
						The categories supported by this family
					</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="id" type="ufamily:NodeFamilyID" use="required">
      <xsd:annotation>
        <xsd:documentation>
					Family ID	
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="name" type="xsd:string" use="required">
      <xsd:annotation>
        <xsd:documentation>
					Family Name
				</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
</xsd:schema>